package SlidingWindow;

import java.util.ArrayList;
import java.util.List;

/**
 * @Classname JZ57和为s的连续正数序列
 * @Description TODO
 * @Date 2022/12/21 10:38
 * @Created by xjl
 */
public class JZ57和为s的连续正数序列 {
    /**
     * @description 采用的是的滑动窗口的方式来实现  其实也就是的一个双指针的表现而已。
     * @param: target
     * @date: 2022/12/21 10:50
     * @return: int[][]
     * @author: xjl
     */
    public int[][] findContinuousSequence(int target) {
        int left = 1;
        int right = 1;
        List<int[]> res = new ArrayList<>();
        int sum = 0;
        while (left <= target / 2) {
            if (sum < target) {
                sum += right;
                right++;
            } else if (sum > target) {
                sum -= left;
                left++;
            } else {
                // 相等于的操作
                int[] arr = new int[right - left];
                for (int k = left; k < right; k++) {
                    arr[k - left] = k;
                }
                res.add(arr);
                sum -= left;
                left++;
            }
        }
        return res.toArray(new int[res.size()][]);
    }
}
